package com.wxk.lambda.syntax;

import com.wxk.lambda.interfaces.*;

/**
 * wxk
 */
public class Syntax1 {
    public static void main(String[] args) {
        //1.Lambda表达式的基础语法：
        //Lambda是一个匿名函数
        //参数列表 方法体

        //(): 用来描述参数列表
        //->:Lambda运算符，读作 goes to
        //{}: 用来描述方法体

        //无参无返回
        LambdaNoneReturnNoneParameter lambda1 = () -> {
            System.out.println("Hello World");
        };

        lambda1.test();

        //无返回值单个参数
        LambdaNoneReturnSingleParameter lambda2 = (int a) -> {
            System.out.println(a);
        };

        lambda2.test(10);

        //无返回值多个参数
        LambdaNoneReturnMultipleParameter lambda3 = (int a, int b) -> {
            System.out.println(a + b);
        };

        lambda3.test(10, 20);

        //无参有返回值
        LambdaSingleReturnNoneParameter lambda4 = () -> {
            System.out.println("lambda4");
            return 100;
        };

        int ret = lambda4.test();
        System.out.println(ret);

        //一个参数有返回值
        LambdaSingleReturnSingleParameter lambda5 = (int a) -> {
            System.out.println("lambda5");
            return a * 2;
        };

        int ret2 = lambda5.test(10);
        System.out.println(ret2);

        //多个参数有返回值
        LambdaSingleReturnMultipleParameter lambda6 = (int a, int b) -> {
            System.out.println("lambda6");
            return a * b;
        };

        int ret3 = lambda6.test(10, 20);
        System.out.println(ret3);


    }
}
